package com.css.fxfzdzzh.modules.surfaceRupture.repository;

import com.css.fxfzdzzh.modules.surfaceRupture.entity.*;
import com.css.fxfzdzzh.modules.surfaceRupture.param.PageQueryParam;
import com.css.fxfzdzzh.modules.surfaceRupture.vo.ParamVO;
import com.css.fxfzdzzh.modules.surfaceRupture.vo.SurfaceRuptureNumVO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author Dbj
 * @date 2023年04月08日  13:49
 */
public interface SurfaceRuptureRepository {
    void evaluate(List<SurfaceRupture> list);

    void updateRuptureLengthAndDisplacement(String drsId,BigDecimal ruptureLength,BigDecimal displacement);

    Map<String, Object> page(PageQueryParam pageQueryParam);

    void delete(List<String> idList, Date updateTime);

    void batchSaveLog(List<OperateLog> logs);

    String getMaxNum();

    Integer getEarthQuake(BigDecimal longitude,BigDecimal latitude,Date earthQuakeTime,String sourceFrom);

    List<SurfaceRupture> getByNum(String  num);

    void updateReportId(List<String> idList, String reportId);

    List<SurfaceRuptureNumVO> getRuptureList();

    void batchSave(List<Fault> faultList);

    void saveMaxLengthFault(MaxLengthFault maxLengthFault);

    Double getFaultLength(String geom);

    String getShortestPoint(String geom, String geomText);

    BigDecimal getShortestDistince(String longitudeLatitude);

    BigDecimal getFaultLength(BigDecimal lon, BigDecimal lat, BigDecimal currentLon, BigDecimal currentLat);

    String getCenterGeomText(String geom);

    void batchSaveFault(List<SurfaceRuptureFault> surfaceRuptureFaultList);

    String getGeomText(String geom);

    String getCenterGeom(String geom);

    void batchSaveFaultDisplacement(List<SurfaceRuptureFaultDisplacement> surfaceRuptureFaultDisplacements);

    void saveSeismogenicStructureStimate(SeismogenicStructureStimate seismogenicStructureStimate);

    SurfaceRupture getById(String drsId);

    Integer hasEvaluateResult(String num);

    //获取根据地表破裂带评估结果计算发震构造评估椭圆参数
    List<String> getEvaluateResultEllipseParams(String num);

    //查询空间数据长度（米）
    double getGeomLength(String lineString,String centerPoint);

    //查询P1P2P3夹角,如果angle值大于180则夹角为360-angle，否则夹角为angle，夹角范围为[0,180]
    String queryP1P2P3Angle(String P1LonLat, String P2LonLat, String P3LonLat);

    //根据2点经纬度查询连线与正北方向的夹角，[0,180]）
    String getAngleByPoints(String point1,String point2);

    List<SurfaceRupture> getSurfaceRuptureNumOfPg();

    void saveParam(ParamVO paramVO);

    void deleteParam();

    ParamVO getParam();

    void save(SurfaceRupture entity);
}
